8b08c17f895270d4245e8213cb92d364f71a463b,sketches/src/main/java/com/yahoo/sketches/sampling/ReservoirItemsUnion.java,ReservoirItemsUnion,toByteArray,#ArrayOfItemsSerDe#Class#,268

Before Change


    final Memory mem = new NativeMemory(outArr);

    // build preLong
    long pre0 = 0L;
    pre0 = PreambleUtil.insertPreLongs(preLongs, pre0); // Byte 0
    pre0 = PreambleUtil.insertSerVer(SER_VER, pre0); // Byte 1
    pre0 = PreambleUtil.insertFamilyID(Family.RESERVOIR_UNION.getID(), pre0); // Byte 2
    pre0 = (empty) ? PreambleUtil.insertFlags(EMPTY_FLAG_MASK, pre0)
        : PreambleUtil.insertFlags(0, pre0); // Byte 3
    pre0 = PreambleUtil.insertMaxK(maxK_, pre0); // Bytes 4-5

    mem.putLong(0, pre0);

After Change


    final byte[] gadgetBytes = (gadget_ != null ? gadget_.toByteArray(serDe, clazz) : null);

    if (empty) {
      preLongs = Family.RESERVOIR_UNION.getMinPreLongs();
      outBytes = 8;
    } else {
      preLongs = Family.RESERVOIR_UNION.getMaxPreLongs();
      outBytes = (preLongs << 3) + gadgetBytes.length; // for longs, we know the size
    }
    final byte[] outArr = new byte[outBytes];
    final Memory mem = new NativeMemory(outArr);

    final Object memObj = mem.array(); // may be null
    final long memAddr = mem.getCumulativeOffset(0L);

    // build preLong
    PreambleUtil.insertPreLongs(memObj, memAddr, preLongs); // Byte 0
    PreambleUtil.insertSerVer(memObj, memAddr, SER_VER); // Byte 1
    PreambleUtil.insertFamilyID(memObj, memAddr, Family.RESERVOIR_UNION.getID()); // Byte 2
    if (empty) {
      PreambleUtil.insertFlags(memObj, memAddr, EMPTY_FLAG_MASK);
    } else {
      PreambleUtil.insertFlags(memObj, memAddr, 0); // Byte 3
    }
    PreambleUtil.insertMaxK(memObj, memAddr, maxK_); // Bytes 4-5